// la funzione costruttore di una classe derivata è libera di utilizzare
// tutti i parametri dichiarati, anche nel caso in cui questi 
// debbano essere passati alla classe base

#include <iostream>
using namespace std;

class base1
{
protected:
int i,j;
public:
base1(int x, int y) {i=x; j=y;cout<<"costruzione di base1\n";}
~base1() {cout<<"distruzione di base1\n";}
};


class derivata :public base1
{
int k;
public:
derivata (int x, int y):base1(x,y)
{k=x*y; cout<<"costruzione di derived\n";}
~derivata(){cout<<"distruzione di derivata\n";}
void mostra() {cout<<i<<"x"<<j<<"="<<k<<endl;};
};


int main()
{
derivata ob(5,6);
ob.mostra();
return 0;
}

/*
costruzione di base1
costruzione di derived
5x6=30
distruzione di derivata
distruzione di base1
Press any key to continue
*/
